package com.mall.common.service;

import java.util.List;

import com.mall.common.domain.manage.Menu;
import com.mall.common.domain.manage.Operate;

/**
 * Service接口 - 菜单
 */
public interface MenuService extends BaseService<Menu, Long> {
	
	/**
	 * 获取菜单树，会递归查询所有子菜单
	 * @param roles
	 * 			角色s
	 * @return
	 */
	public List<Menu> getMenuTree(List<Long> roleIds);

	/**
	 * 获取顶级菜单(非递归， 无权限控制)
	 * @return
	 */
	public abstract List<Menu> getTopList();

	/**
	 * 根据权限获取顶级菜单(非递归)
	 * @return
	 */
	public abstract List<Menu> getTopListByRigth();

	/**
	 * 获取所有的菜单
	 * @return
	 */
	public abstract List<Menu> getAllMenus();
	
	/**
	 * 更新菜单
	 * @param menu
	 * @param operate
	 * @return
	 */
	public Menu update(Menu menu, Operate operate);

	public abstract void save(Menu menu, Operate operate);

	/**
	 * 上移动是-1, 下移是1
	 * @param menu
	 * @param i
	 */
	public abstract void updateMoveMenu(Menu menu, int i);
	
	public void updateMenuPriority(Long[] ids, Integer[] priority);
}
